package cn.b.sky.admin.service;

import cn.b.sky.admin.model.BatchJobReport;
import cn.b.sky.admin.model.FunctionGroup;
import cn.b.sky.admin.model.Page;
import cn.b.sky.admin.model.condition.FunctionGroupCondition;

import java.util.List;

/**
 * 
 * <strong>Title : FunctionGroupService<br></strong>
 * <strong>Package : cn.b.sky.admin.service<br></strong>
 * <strong>Description : </strong>功能组操作业务类接口<br> 
 * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
 * <p>
 * @author JunLin.Yang<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface FunctionGroupService {

  /**
   * 
   * <strong>Title : selectFunctionGroupsPageByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询功能组分页信息<br> 
   * <strong>Create on : 2016-6-7 上午10:24:07<br></strong>
   * <p>
   * @param condition 功能组查询条件
   * @return
   * Page 分页信息
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Page selectFunctionGroupsPageByCondition(FunctionGroupCondition condition);

  /**
   * 
   * <strong>Title : getFunctionGroupByPK<br></strong>
   * <strong>Description : </strong>根据主键查询功能组对象<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param functionGroupCode 功能组编号
   * @return
   * FunctionGroup 功能组对象
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public FunctionGroup getFunctionGroupByPK(String functionGroupCode);

  /**
   * 
   * <strong>Title : insertOrUpdateFunctionGroup<br></strong>
   * <strong>Description : </strong>新增或修改功能组<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param data 功能组
   * @return
   * String 主键值
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public String insertOrUpdateFunctionGroup(FunctionGroup data);

  /**
   * 
   * <strong>Title : deleteFunctionGroupByPK<br></strong>
   * <strong>Description : </strong>根据主键信息删除功能组数据<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param functionGroupCode 主键信息
   * BatchJobReport 删除结果报告
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public BatchJobReport deleteFunctionGroupByPK(String functionGroupCode);

  /**
   * 
   * <strong>Title : getAllFunctionGroups<br></strong>
   * <strong>Description : </strong>获取所有功能组<br> 
   * <strong>Create on : 2016年6月13日 下午1:06:01<br></strong>
   * <p>
   * @return
   * List<FunctionGroup>
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<FunctionGroup> getAllFunctionGroups();
  
  /**
   * 
   * <strong>Title : getFunctionGroupsByCodes<br></strong>
   * <strong>Description : </strong>查询一组功能组数据<br> 
   * <strong>Create on : 2016年6月14日 上午9:11:37<br></strong>
   * <p>
   * @param groupCodes
   * @return
   * List<FunctionGroup>
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<FunctionGroup> getFunctionGroupsByCodes(String[] groupCodes);

}
